配置回源HTTP请求头

阿里云CDN默认支持携带一些例如客户端IP地址的请求头,也支持自定义配置。如果您需要改写用户回源请求中的HTTP Header,可以通过配置回源HTTP请求头实现,支持增加、删除、变更或替换回源HTTP请求头,满足更多实际业务需求。

背景信息

HTTP请求头是HTTP的请求消息头的组成部分之一,可携带特定的请求参数信息并传递给服务器。

CDN节点请求回源站拉取资源时,源站可获取到回源请求头中携带的信息。您可以通过该功能,改写用户回源请求中的HTTP Header信息,携带特定的参数信息给源站,实现特定业务需求。例如,通过X-Forwarded-For头部携带真实客户端IP至源站。

源站服务器通过用户回源请求中携带的X-Forwarded-For头部获取客户端真实IP的方式,请参见获取客户端真实IP

image

注意事项

  • 回源请求指用户请求中通过CDN回源的HTTP消息。回源HTTP请求头配置只会影响通过CDN回源的HTTP消息,对于CDN节点直接响应给用户的HTTP消息不做修改。

  • 不支持对泛域名配置回源HTTP请求头。

  • 阿里云CDN默认支持携带以下HTTP请求头回源,您无需额外配置。

    回源HTTP Header

    说明

    示例

    Ali-Cdn-Real-Ip

    客户端与CDN节点建连时使用的真实IP。

    Ali-Cdn-Real-Ip:192.168.0.1

    X-Forwarded-For

    客户端请求经过CDN节点回源的整个链路上,包括客户端和CDN节点的IP信息。

    X-Forwarded-For:192.168.0.1, 172.16.0.1

    X-Client-Scheme

    客户端发送到CDN节点的应用层请求使用的协议,例如:HTTP、HTTPS。

    X-Client-Scheme:http

    Host

    客户端请求在回源时实际访问的源站Web站点域名。

    Host:example.com

    Via

    客户端请求经过的所有CDN节点的名称。

    Via:cn2546-10.l1, cache1.cn2546-10, l2cn2547-7.l2, cache1.l2cn2547-7

  • 回源HTTP请求头的值如果配置的是某个变量,那么实际使用的时候会被设置为具体的变量值,以下为可以使用的变量。

    名称

    回源HTTP Header

    说明

    示例

    Ali-Cdn-Real-Port

    $http_Ali_Cdn_Real_Port

    在回源头里面添加客户端真实端口信息,向源站传递客户端端口信息。

    Ali-Cdn-Real-Port:80

    Ali_Cdn_Real_Ip

    $http_Ali_Cdn_Real_Ip

    在回源头里面添加客户端真实IP信息,向源站传递客户端IP地址信息。

    Ali-Cdn-Real-Ip:192.168.0.1

    x_forwarded_for

    $proxy_add_x_forwarded_for

    在回源头里面添加X-Forwarded-For信息,向源站传递客户端IP和中间的代理服务器IP。

    X-Forwarded-For:192.168.0.1, 172.16.0.1

操作步骤

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,找到目标域名,单击操作列的管理

  4. 在指定域名的左侧导航栏,单击回源配置

  5. 单击回源HTTP请求头页签。

  6. 单击添加

  7. 配置回源HTTP请求头信息。

    重要

    当不同的操作方式同时作用于同一个回源请求头参数时,会存在操作冲突。此时按照操作类型的优先级来执行,优先级顺序为替换增加变更删除。例如,当增加和删除操作同时作用于同一个参数时,会先增加再删除。

    增加请求头参数

    HTTP请求头信息

    配置项

    示例

    说明

    请求头操作

    增加

    在回源HTTP请求中增加指定的请求头参数。

    自定义请求头参数

    自定义回源请求头

    选择自定义回源请求头或选择已经预设好的请求头参数。

    自定义请求头名称

    x-code

    自定义请求头名称为x-code。

    请求头值

    key1, key2

    一个请求头参数中可以配置多个值,多个值用英文逗号(,)分隔。

    是否允许重复

    允许

    • 允许:可以添加重复的请求头参数。例如x-code:key1x-code:key2

    • 不允许:添加同一个请求头参数,新值将覆盖旧值。例如先添加x-code:key1,再添加x-code:key2,最终的值为x-code:key2

    规则条件

    不使用

    规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。

    • 不使用:不使用规则条件。

    • 选择已配置的规则引擎,新增或修改规则引擎请参见规则引擎

    删除请求头参数

    删除

    配置项

    示例

    说明

    请求头操作

    删除

    删除所有与请求头参数名称匹配的参数值,无论是否有重复的请求头参数。

    自定义请求头参数

    自定义回源请求头

    选择自定义回源请求头或选择已经预设好的请求头参数。

    自定义请求头名称

    x-code

    自定义请求头名称为x-code。

    规则条件

    不使用

    规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。

    • 不使用:不使用规则条件。

    • 选择已配置的规则引擎,新增或修改规则引擎请参见规则引擎

    变更请求头参数

    变更

    配置项

    示例

    说明

    请求头操作

    变更

    当请求头参数不存在重复时,可以正常变更参数,如果有多个重复的请求头参数,则不允许变更。

    自定义请求头参数

    自定义回源请求头

    选择自定义回源请求头或选择已经预设好的请求头参数。

    自定义请求头名称

    x-code

    自定义请求头名称为x-code。

    请求头变更为

    key1, key3

    一个请求头参数中可以配置多个值,多个值用英文逗号(,)分隔。

    规则条件

    不使用

    规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。

    • 不使用:不使用规则条件。

    • 选择已配置的规则引擎,新增或修改规则引擎请参见规则引擎

    替换请求头参数

    替换

    配置项

    示例

    说明

    请求头操作

    替换

    当请求头参数不存在重复时,可以正常替换参数,如果有多个重复的请求头参数,则不允许替换。

    自定义请求头参数

    自定义回源请求头

    选择自定义回源请求头或选择已经预设好的请求头参数。

    自定义请求头名称

    x-code

    自定义请求头名称为x-code。

    查找

    key

    正则表达式查找需要替换的参数值。

    替换为

    abc

    正则表达式替换需要替换的参数值。

    匹配

    匹配所有

    • 匹配所有:所有匹配上的值都会被替换。例如x-code:key1,key2,key3,正则匹配值key替换为abc,替换后的结果为x-code:abc1,abc2,abc3

    • 仅匹配第一个:只有第一个匹配上的值会被替换。例如x-code:key1,key2,key3,正则匹配值key替换为abc,替换后的结果为x-code:abc1,key2,key3

    规则条件

    不使用

    规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。

    • 不使用:不使用规则条件。

    • 选择已配置的规则引擎,新增或修改规则引擎请参见规则引擎

  8. 单击确定

常见问题

使用CDN/DCDN后如何获取Nginx服务的真实IP地址